package affichage;


import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;


/**
 * Classe dialog qui est appelée en début de nouvelle partie pour choisir les
 * options de jeu de la partie
 * @author Alexis BRASY, Geoffrey LEQUESNE, Sandrine PIRIOU, Michel POPOV
 */
public class Dialog extends JDialog {
	/** Entier nécessaire pour la sérialisation */
    private static final long serialVersionUID = 1L;
    /** La DialogInfo qui sera affichée à l'écran */
    private DialogInfo Info = new DialogInfo();
    /** Les différents JLabel à appliquer sur la DialogInfo */
    private JLabel modeCombatLabel, modeScenarioLabel, nbPotionLabel, regenPVLabel, xpMortelLabel, depPostMortemLabel, iaLabel, iaNiveauLabel, icon;
    /** Les différents JComboBox à appliquer sur la DialogInfo */
    private JComboBox modeCombat, modeScenario, nbPotion, regenPV, xpMortel, depPostMortem, ia, iaNiveau;
	
    
    /**
     * Constructeur de la Dialog
     * @param parent la JFrame appelante
     * @param title le titre de la Dialog
     * @param modal le booléen
     */
    public Dialog(JFrame parent, String title, boolean modal) {
        super(parent, title, modal);
        this.setSize(900, 580);
        this.setLocationRelativeTo(null);
        this.setResizable(false);
        this.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
        this.initComponent();
    }
	
    /**
     * On initialise les composants de la DialogInfo à l'aide de panels
     */
    public void initComponent() {
    	
        // Image
        icon = new JLabel(new ImageIcon("img/imagemenu.jpg"));
        JPanel panIcon = new JPanel();

        panIcon.setBackground(Color.white);
        panIcon.setLayout(new BorderLayout());
        panIcon.add(icon);
		
        // Mode	de jeu
        JPanel panMode = new JPanel();

        panMode.setBackground(Color.white);
        panMode.setPreferredSize(new Dimension(220, 30));
        panMode.setBorder(BorderFactory.createTitledBorder("Mode de jeux"));
        panMode.setLayout(new GridLayout(5, 1));
		
        // Type de combat
        modeCombat = new JComboBox();
        modeCombat.setPreferredSize(new Dimension(80, 20));
        modeCombat.addItem("A MORT");
        modeCombat.addItem("ASSAUT");
        modeCombatLabel = new JLabel("Type de Combat:   ");
        panMode.add(modeCombatLabel);
        panMode.add(modeCombat);

        // Type de scénario
        modeScenario = new JComboBox();
        modeScenario.setPreferredSize(new Dimension(80, 20));		
        modeScenario.addItem("KILL ALL");
        // modeScenario.addItem("autre scenario");
        modeScenarioLabel = new JLabel("Type de Scénario: ");
        panMode.add(modeScenarioLabel);
        panMode.add(modeScenario);
		
        // IA
        ia = new JComboBox();
        ia.setPreferredSize(new Dimension(40, 20));		
        ia.addItem("HUMAIN");
        ia.addItem("ORDINATEUR");
        iaLabel = new JLabel("Type d'opposant:");
        panMode.add(iaLabel);
        panMode.add(ia);
		
        // Niveau de l'IA
        iaNiveau = new JComboBox();
        iaNiveau.setPreferredSize(new Dimension(40, 20));		
        iaNiveau.addItem("FACILE");
        iaNiveau.addItem("NORMALE");
        iaNiveau.addItem("DIFFICILE");
        iaNiveauLabel = new JLabel("Niveau de l'IA:");
        panMode.add(iaNiveauLabel);
        panMode.add(iaNiveau);

        // Nombre init
        JPanel panNombr = new JPanel();

        panNombr.setBackground(Color.white);
        panNombr.setPreferredSize(new Dimension(220, 30));
        panNombr.setBorder(
                BorderFactory.createTitledBorder("Initialiser le jeu"));
				
        panNombr.setLayout(new GridLayout(5, 1));

        // nbPotion

        nbPotion = new JComboBox();
        nbPotion.setPreferredSize(new Dimension(40, 20));		
        nbPotion.addItem("2");
        nbPotion.addItem("1");
        nbPotion.addItem("0");
        nbPotion.addItem("3");
        nbPotionLabel = new JLabel("nbr de potion:");
        panNombr.add(nbPotionLabel);
        panNombr.add(nbPotion);		
				
        // regen pv
		
        regenPV = new JComboBox();
        regenPV.setPreferredSize(new Dimension(40, 20));		
        regenPV.addItem("2");
        regenPV.addItem("0");
        regenPV.addItem("5");
        regenPV.addItem("10");
        regenPVLabel = new JLabel("regen de PV:");
        panNombr.add(regenPVLabel);
        panNombr.add(regenPV);		
		
        // xp mortel
		
        xpMortel = new JComboBox();
        xpMortel.setPreferredSize(new Dimension(40, 20));		
        xpMortel.addItem("300");
        xpMortel.addItem("-1");
        xpMortel.addItem("100");
        xpMortel.addItem("500");
        xpMortelLabel = new JLabel("Xp mortel:");
        panNombr.add(xpMortelLabel);
        panNombr.add(xpMortel);
		
        // dep mortel
		
        depPostMortem = new JComboBox();
        depPostMortem.setPreferredSize(new Dimension(40, 20));		
        depPostMortem.addItem("3");
        depPostMortem.addItem("7");
        depPostMortem.addItem("10");
        depPostMortem.addItem("15");
        depPostMortemLabel = new JLabel("depl mortel:");
        panNombr.add(depPostMortemLabel);
        panNombr.add(depPostMortem);
		
        // Logo
		
        JPanel panLogo = new JPanel();

        panLogo.setBackground(Color.white);
        icon = new JLabel(new ImageIcon("img/logoinitialisation.jpg"));
        panLogo.setBackground(Color.white);
        panLogo.setLayout(new BorderLayout());
        panLogo.add(icon);
        panLogo.setPreferredSize(new Dimension(300, 300));
			
        // Valider
        JPanel panValider = new JPanel();

        panValider.setBackground(Color.white);
        panValider.setPreferredSize(new Dimension(220, 80));
        panValider.setBorder(BorderFactory.createTitledBorder("Controle"));
        JButton okBouton = new JButton("Valider");
        JButton quitterBouton = new JButton("Defaut");

        panValider.add(okBouton);
        panValider.add(quitterBouton);
		
        okBouton.addActionListener(
                new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {				
                Info = new DialogInfo((String) modeScenario.getSelectedItem(), 
                        (String) modeCombat.getSelectedItem(),
                        (String) nbPotion.getSelectedItem(), 
                        (String) regenPV.getSelectedItem(),
                        (String) xpMortel.getSelectedItem(),
                        (String) depPostMortem.getSelectedItem(),
                        (String) ia.getSelectedItem(),
                        (String) iaNiveau.getSelectedItem());
                setVisible(false);
            }
								
        });
		
        quitterBouton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                setVisible(false);
            }
        });	
		
        // Ajout des Jpanel
		
        this.getContentPane().add(panValider, BorderLayout.SOUTH);
        this.getContentPane().add(panLogo, BorderLayout.NORTH);
        this.getContentPane().add(panNombr, BorderLayout.EAST);
        this.getContentPane().add(panMode, BorderLayout.CENTER);
        this.getContentPane().add(panIcon, BorderLayout.WEST);
    }
	
    /**
     * Getter de la DialogInfo et affiche la Dialog à l'écran
     * @return la DialogInfo
     */
    public DialogInfo showDialog() {
        this.setVisible(true);		
        return this.Info;		
    }
}
